home *** CD-ROM | disk | FTP | other *** search
/ Network Support Library / RoseWare - Network Support Library.iso / btrieve / sql_dp.arj / XQLMTEST.PAS < prev   
Pascal/Delphi Source File  |  1993-07-27  |  5KB  |  155 lines

  1. program ProtectedModeTest;
  2.  
  3.   Uses  CRT, XQLMDPMI;
  4.  
  5.   const XQL_SPACING        =   2; 
  6.         XQL_BLANK          =   1; 
  7.  
  8.         CUR_REC            =   0;
  9.         FIRST_REC          =   1;
  10.         NEXT_REC           =   2;
  11.         PREV_REC           =   3;
  12.         LAST_REC           =   4;
  13.  
  14.         MAX_FIELD_NAME_LEN = 255;
  15.  
  16.   var   Status,
  17.         Cursor,
  18.         DataType,
  19.         DataDec,
  20.         DataSize,
  21.         NameLen,
  22.         DataLen,
  23.         StmntLen  : integer;
  24.         i,
  25.         RecCount  : longint;  
  26.         Statement : array[0.. 1000] of char;
  27.         DataLine  : array[0..10000] of char;
  28.         TmpStr    : string;
  29.  
  30.  
  31.   procedure XQLLog;
  32.     const Reserved    : char = #0;
  33.     var   CursorNr,
  34.           ProcessID   : integer;
  35.           UserID,    
  36.           PassWord,  
  37.           DDPath,    
  38.           Machine,   
  39.           XQLDataPath : string;
  40.     begin  { of XQLLog }
  41.       UserID      := 'Master'    + #0;
  42.       PassWord    := 'Master'    + #0;
  43.       DDPath      := ParamStr(1) + #0;
  44.       XQLDataPath := DDPath;
  45.       Machine     := Reserved;
  46.       ProcessID   := 0;
  47.  
  48.       Status      := XQLLogin (UserId[1],
  49.                                Password[1],
  50.                                DDPath[1],
  51.                                XQLDataPath[1],
  52.                                Machine[1],
  53.                                ProcessID
  54.                               );
  55.     end;   { of XQLLog }
  56.  
  57.   begin
  58.     if (InitXQLMDPMI=0) then
  59.       begin
  60.         XQLLog;
  61.                            
  62.         if (Status<=0) then
  63.           begin
  64.             writeln('Logged into XQL    Status: ',Status);
  65.     
  66.             Status := XQLCursor(Cursor);
  67.             writeln('XQLCursor : ',Status,'    CursorID : ',Cursor);
  68.     
  69.             if (Status=0) then
  70.               begin
  71.                 FillChar(Statement[0], 1000, #0);
  72.                 TmpStr := 'SELECT * FROM KUNDEN';
  73.                 Move(TmpStr[1],Statement[0],length(TmpStr));
  74.                 StmntLen := succ(length(TmpStr));
  75.  
  76.                 Status := XQLCompile(Cursor,StmntLen ,Statement[0]);
  77.                 writeln('Compiling >',TmpStr,'<   Status : ',Status);
  78.  
  79.                 DataLen  := 10000;
  80.                 RecCount := 1;
  81.                 Status  := XQLFetch(Cursor,
  82.                                     FIRST_REC,
  83.                                     DataLen,
  84.                                     DataLine[0],
  85.                                     RecCount,
  86.                                     XQL_BLANK, 
  87.                                     XQL_SPACING);
  88.  
  89.                 writeln('Fetch FIRST  Status : ',Status);
  90.  
  91.                 i := 2;
  92.                 while (Status=0) do
  93.                   begin
  94.                     DataLen  := 10000;
  95.                     RecCount := 1;
  96.                     Status  := XQLFetch(Cursor,
  97.                                         NEXT_REC,
  98.                                         DataLen,
  99.                                         DataLine[0],
  100.                                         RecCount,
  101.                                         XQL_BLANK, 
  102.                                         XQL_SPACING);
  103.     
  104.                     move(DataLine[0], TmpStr[1], 70); 
  105.                     TmpStr[0] := chr(70);
  106.                     writeln(i,'  >',TmpStr,'<');
  107.                     inc(i);
  108.                   end;
  109.  
  110.  
  111.                 i := 1;
  112.                 repeat
  113.                   TmpStr[0] := chr(MAX_FIELD_NAME_LEN);
  114.                   FillChar(TmpStr[1], MAX_FIELD_NAME_LEN, #32);
  115.                   NameLen := MAX_FIELD_NAME_LEN;
  116.       
  117.                   Status := XQLDescribe(Cursor,
  118.                                         i,
  119.                                         DataType,
  120.                                         DataSize,
  121.                                         DataDec,
  122.                                         DataLen,
  123.                                         NameLen,
  124.                                         TmpStr[1]);
  125.  
  126.                   if (Status=0) then
  127.                     begin
  128.                       TmpStr[0] := chr(NameLen);
  129.                       writeln('Describe Status : ',Status,'  >',TmpStr,'<');
  130.                     end;
  131.  
  132.                   inc(i);
  133.                 until (Status<>0);
  134.  
  135.                 Status := XQLFree(Cursor);
  136.                 writeln('XQLFree Status: ',Status);
  137.               end;
  138.  
  139.  
  140.             Status := XQLLogout;
  141.             writeln('Logged out from XQL    Status: ',Status);
  142.           end
  143.         else
  144.           writeln('No login possible    Status:',Status);
  145.  
  146.         ExitXQLMDPMI;
  147.       end
  148.     else
  149.       writeln('Error initialising XQL DPMI Interfaxe ');
  150.   end.
  151.  
  152.  
  153.  
  154.  
  155.